home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 243 / 243.d81 / t.clips tech < prev    next >
Text File  |  2022-08-26  |  4KB  |  177 lines

  1. u
  2.            CLIPS TECHNOTES
  3.            by Dave Moorman
  4.  
  5.  
  6.     CLIPS came to life after a great
  7. discovery. Several months ago, I was
  8. checking Scene World on my real C-64,
  9. and pressed <Y> at the FAST LOADER
  10. prompt. To my surprise, the music kept
  11. playing without slowing down while
  12. files were being loaded. This was a
  13. marvelous thing, and I wanted it for
  14. LOADSTAR.
  15.  
  16.     I contacted Joerg Droeg, publisher
  17. of Scene World, and he directed me to
  18. the Covert BitOps website. The FAST
  19. LOADER is the work of Lasse Oorni and
  20. others of the Euro Elite Demo Dudez.
  21. The source code was there, but I
  22. realized my limits. I got Robin
  23. Harbron to modify the code so we could
  24. use it in our
  25.  
  26.       SYS ADDR,FILE$,DV,LOCATION
  27.  
  28. format. Robin got to it -- and did a
  29. great job. We called the result
  30. IRQLOADER.
  31.  
  32.     That's when I started CLIPS -- an
  33. improvement over MediaMeister as an
  34. all purpose, script-driven graphics/
  35. text/music presenter. But when I
  36. incorporated IRQLOADER, it didn't
  37. work.
  38.  
  39.     I don't know why. Perhaps the FAST
  40. LOADER doesn't like BASIC. Perhaps we
  41. are missing an important part of the
  42. concept. Robin sent me several fixes,
  43. but to no avail. The only option was
  44. to take out the IRQLOADER portion of
  45. CLIPS.
  46.  
  47.     But I still wanted to have the
  48. music. With VICE, there is no problem.
  49. The loads do not interrupt the
  50. interrupt. But trying to listen to
  51. music while loading a graphic file on
  52. a 1541 is pure torture. So I modified
  53. the code to pause the music during
  54. loads when the program detects a
  55. "real" disk drive (or True Drive in
  56. VICE).
  57.  
  58.     Our hope is to get IRQLOADER
  59. working correctly. When it does,
  60. version 2 of CLIPS will be released --
  61. along with IRQLOADER and all its
  62. documentation.
  63.  
  64.  
  65.  BUT ALL IS NOT LOST
  66.  -------------------
  67.  
  68.     CLIPS has some great features,
  69. including "konditional commands" which
  70. allow a script to become an
  71. interactive program. Granted, having
  72. BASIC read a script and respond is a
  73. tad pokey. But the power is there.
  74. Perhaps by V2 major portions will be
  75. handled by ML.
  76.  
  77.     The big thrill was getting
  78. variables to work. I tried doing it
  79. all in BASIC with arrays and such. The
  80. result consumed too much memory.
  81.  
  82.     So I whined about it to my PC
  83. guru, Kevin Barrow. He replied,
  84. "Doesn't BASIC do variables?"
  85.  
  86.     "Well, sure. But this is a BASIC
  87. program."
  88.  
  89.     "I know. Can't you copy your
  90. variable stuff to the end of BASIC
  91. memory and get the BASIC interpreter
  92. to do it for you?"
  93.  
  94.     "Uh -- maybe. But this is a BASIC
  95. program."
  96.  
  97.     "You're not listening to me,
  98. Dave!" he shot back.
  99.  
  100.     I [was] listening, but my mind was
  101. struggling with the possible ways to
  102. accomplish such a feat. It would
  103. require some ML -- copying code and
  104. redirecting the pointer in CHARGET and
  105. ....
  106.  
  107.     Then I had it! Pure simplicity,
  108. really. I wrote a test program to see
  109. if it would work.
  110.  
  111.  10 GOTO30
  112.  20 rem                     :end:
  113.  30 a$="a=3+4*7"
  114.  40 forx=1tolen(a$)
  115.  50 poke2048+13+x,asc(mid$(a$,x))
  116.  60 next
  117.  70 goto20
  118.  
  119. It didn't work. The problem turned out
  120. to be the difference between the ASCII
  121. values for characters such as "=" and
  122. "+" and the program token values for
  123. the same things. Using the monitor, I
  124. wrote out the conversions as IF-THEN
  125. statements.
  126.  
  127.     And [BAM!] It worked. I put the
  128. copy/conversion routine into ML, and
  129. added code to append ":RETURN:" to the
  130. copied string. Then I made line 2 of
  131. CLIPS the working line:
  132.  
  133.  1 blah:blah:goto3
  134.  2 rem                           :
  135.  3 blah:blah
  136.  
  137.     The SYS ADDR,A$ puts the
  138. assignment into line 2:
  139.  
  140.  2 VA=VAOR4:RETURN:
  141.  
  142. and a GOSUB2 does all the work and
  143. returns the result.
  144.  
  145.     I decided that all valid variables
  146. would begin with a "v", and enforced
  147. the rule by making "v" the command
  148. letter. This way, none of the
  149. variables used in CLIPS will be
  150. changed. If you know what the
  151. variables are, you can "import" their
  152. values into a CLIPS script -- as I did
  153. in 2005 IN THE NEWS.
  154.  
  155.  <v0=lf>
  156.  
  157. The variable lf is the Load Flag,
  158. which is 0 if VICE is being used (True
  159. Drive off). With that information in
  160. the script, I could ask non-VICE users
  161. if they wanted the music to play at
  162. all.
  163.  
  164.     Of course, this kind of trick
  165. requires a knowledge of CLIPS. Good
  166. luck!
  167.  
  168.     To get an idea how to use CLIPS,
  169. take a look at "c.2005", which is the
  170. "clipshow" file for 2005 IN THE NEWS.
  171. I use sub scripts, labels, and lots of
  172. konditional commands -- maybe too
  173. many.
  174.  
  175.  DMM
  176.  
  177.  
  178.